'''
 ex10-2案例：使用easySpider模块爬取链家天津地区二手房房源信息
'''
# 1.导入easySpider模块和其他库
import easySpider
import sys,os,io,time

#2.设定输出编码简体中文正常显示
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')

#3.给定目标网页根目录和爬虫用户代理信息
root_url='https://tj.lianjia.com/ershoufang/pg'

#4.准备创建空字典存储爬取下来的数据
pageHouseInfo={}

print("开始爬取时间:",time.asctime())
#5.目前确定共100页，爬取所有数据
for page in range(1,101):
    #构建分页URL地址
    page_url = root_url + str(page)
    #每一页爬取都构建一个easySpider爬虫实例
    pageSpider = easySpider.Spider(url=page_url)

    #计算每页一共多少套房源
    HouseUnits = pageSpider.beautifulsoup_getTarget(selector='div.info.clear')
    pageHouseNumbers=len(HouseUnits)

    print("开始爬取第{}页的数据了".format(page))
    #开始爬取每页里的房源，按出现的先后次序爬取
    # 爬取房源简述HouseIntro列表
    pageHouseIntro = pageSpider.beautifulsoup_getTarget(selector='div.info>div.title')

    # 爬取地理信息HouseFlood列表
    pageHouseFlood = pageSpider.beautifulsoup_getTarget(selector='div.info>div.flood')

    # 爬取楼层相关信息HouseAddress列表
    pageHouseAddress = pageSpider.beautifulsoup_getTarget(selector='div.info>div.address')

    # 爬取房源关注信息HouseFollow列表
    pageHouseFollow = pageSpider.beautifulsoup_getTarget(selector='div.info>div.followInfo')

    # 爬取房源标签信息HouseTag列表
    pageHouseTag = pageSpider.beautifulsoup_getTarget(selector='div.info>div.tag')

    # 爬取房源总价信息HousePrice列表
    pageHouseTotalPrice = 	pageSpider.beautifulsoup_getTarget(selector='div.priceInfo>div.totalPrice')

# 爬取房源单价信息HouseUnitPrice列表
    pageHouseUnitPrice=pageSpider.beautifulsoup_getTarget(selector='div.priceInfo>div.unitPrice')

    # 设定一个pageHouseList空列表，准备将当前页每套房源抓取的信息连接在一起后存储下来，也就是一套房源的所有信息连接在一起后存储到这个列表里
    pageHouseList=[]
    for i in range(len(pageHouseNumbers)):
        #将各信息列表里的元素转换为字符串后使用分号拼接在一起
        strList=str(pageHouseIntro[i])+';'+str(pageHouseFlood[i])+';'+str(pageHouseAddress[i])+';' +str(pageHouseFollow[i])+';' \
                +str(pageHouseTag[i])+';'+str(pageHouseTotalPrice[i])+';'+str(pageHouseUnitPrice[i])

        #追加到pageHouseList
        pageHouseList.append(strList)

    # 将该页所有房源信息的列表存入pageHouseInfo字典，page为键，pageHouseList为对应的值，构成字典里的一个键值对。这样每一页房源信息一个键值对
    pageHouseInfo[page] = pageHouseList

    print("第{}页的数据爬取完毕,等待3秒进入下一页爬取...\n".format(page))
    time.sleep(3)

print("所有页的房源信息抓取完毕...")
print("结束时间为：",time.asctime())